- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
Вместе с Progress Bar вы можете отображать другие компоненты.
Также вы можете отображать несколько индикаторов Progress Bar.
Вы можете повторно использовать индикатор Progress Bar.
Окно Progress Monitor нельзя использовать повторно.
После того, как монитор прогресса решил отобразить диалоговое окно, он не сможет сделать это снова.
Окно Progress Monitor используется, если вам нужен простой способ отображения прогресса в диалоговом окне.
Окно Progress Monitor предоставляет пользователю возможность отклонить диалог во время выполнения задачи.
Также задача может быть отменена с помощью кнопки Cancel окна.
Окно Progress Monitor предоставляет метод setNote, чтобы задача могла предоставить дополнительную информацию о том, что она делает.
Вы можете контролировать появление окна или его не появление в зависимости от времени выполнения задачи с помощью метода setMillisToPopup.
JMenuBar
Тяжеловесные окна верхнего уровня JFrame, JApplet и JDialog могут содержать панель меню горизонтально ниже заголовка окна.
Панель меню представлена классом JMenuBar.
Эта панель меню состоит из различных выборов меню, доступных конечному пользователю.
Кроме того, каждый выбор содержит список опций, который называется раскрывающимся меню.
Выбор меню представлен классом JMenu, а опция в списке представлена классом JMenuItem.
При этом видно, что класс JMenu расширяет класс JMenuItem.
Чем же отличаются выбор меню от опции в списке?
Во-первых, видно, что и тот и другой класс, это просто кнопки.
Но, выбор меню JMenu, в отличие от опции JMenuItem, обеспечивает всплывающее окно, содержащее JMenuItems, которое отображается, когда пользователь выбирает JMenu в панеле JMenuBar.
В дополнение к элементам JMenuItem, меню JMenu также может содержать разделители JSeparator.
По сути, меню представляет собой кнопку с ассоциированным всплывающим меню JPopupMenu.
Когда нажимается «кнопка», появляется всплывающее меню JPopupMenu.
Панель меню создается с помощью конструктора класса и добавляется в окно верхнего уровня методом setJMenuBar.
Затем создается само меню, которое добавляется в панель меню методом add.
Так как панель меню использует компоновку BoxLayout, а метод add позволяет добавлять любой Swing компонент, в панель меню можно добавить заполнитель класса Box, и меню окажется справа.
После создания панели меню и меню, в меню добавляются элементы меню, которые на самом деле содержатся в меню JPopupMenu, появляющемся при нажатии меню.
Элементы меню добавляются в меню методом add.
Туда же можно и добавлять разделители между элементами меню.
При создании элемента меню в нем можно задать текст, изображение, или сразу и то и другое с помощью конструктора класса JMenuItem.
Также, при создании элемента меню можно задать для него горячие клавиши, методом setAccelerator.
При этом горячие клавиши будут отображаться в элементе меню.
К элементу меню обычно присоединяют слушателя событий, который обрабатывает нажатие элемента меню и выполняет действие, для которого этот элемент меню собственно и создавался.
Для меню и элементов меню можно назначить мнемонику или клавиши выбора с помощью метода setMnemonic.
Здесь для меню File мы назначаем комбинацию клавиш Alt + F, при нажатии на которые открывается меню.
Затем мы назначаем мнемонику или клавишу Е для элемента меню Exit.
Чтобы воспользоваться этой клавишей, мы сначала нажимаем Alt + F, то есть открываем меню, а затем нажимаем E и срабатывает этот элемент меню.
В отличие от мнемоники, клавиши акселерации сразу нажимают элемент меню.
Меню и элемент меню также можно создать на основе объекта Action, инкапсулирующего свойства, которые могут быть повторно использованы.
Объект Action может быть использован для разделения функциональности и состояния от самого компонента.
Например, если у вас есть два или более компонента, которые выполняют одну и ту же функцию, можно использовать один объект Action для создания этих компонентов.
Объект Action – это слушатель действий, который обеспечивает не только обработку событий, но также централизованную обработку состояния компонентов, связанных с событием, таких как элементы меню.
Состояние, которое обрабатывается этим действием, включает в себя текст, значок, мнемонику, активацию и выбранный статус.
В этом примере мы создаем действие Action, в котором задаем надпись элемента меню, его клавиши акселерации, и обработчик нажатия элемента меню, в котором мы показываем диалоговое окно подтверждения действия.
Далее мы создаем элемент меню на основе объекта Action и добавляем этот элемент в само меню.
JCheckboxMenuItem и JRadioButtonMenuItem
Помимо простого элемента меню, есть компоненты JCheckboxMenuItem и JRadioButtonMenuItem, представляющие флажок и радиокнопку для добавления в меню.
В этом примере обработчик выбора флажка позволяет динамически добавляет и удалять элементы меню.
Отследить состояние выбора флажка позволяет метод getState.
В этом примере мы создаем две радиокнопки и объединяем их в группу.
Чтобы могла быть выбрана только одна кнопка.
В обработчике событий выбора радиокнопки мы используем команду, присвоенную кнопке, как ее идентификатор при выборе радиокнопки.
JPopupMenu
Всплывающее меню JPopupMenu используется обычно как контекстное меню.
Оно появляется при нажатии правой кнопки мыши на компоненте, к которому привязано.
Для создания всплывающего меню используется конструктор класса, в котором можно указать заголовок меню.
Затем создаются элементы меню, которые добавляются в всплывающее меню.
Для того чтобы всплывающее меню появилось, к компоненту добавляется слушатель событий мыши.
В обработчике этого слушателя, для события мыши вызывается метод isPopupTrigger, который возвращает подтверждение, является ли это событие мыши событием всплывающего меню.
Всплывающие меню запускаются по-разному на разных платформах.
Поэтому событие isPopupTrigger следует проверять как в методе mousePressed, так и в методе mouseReleased для правильной межплатформенной функциональности.
JSpinner и JSlider
Компонент JSpinner работает аналогично компонентам JList и JComboBox, но вместе с компонентом JFormattedTextField.
В компоненте JList и JComboBox пользователь может выбирать ввод из заданного набора значений.
Компонент JSpinner также позволяет использовать этот тип выбора.
Другая половина компонента JSpinner – это форматированное поле JFormattedTextField.
В компоненте JSpinner, как отображать или вводить значение не контролируется средством отображения списка ListCellRenderer, как в JList.
Вместо этого вы получаете форматированное поле JFormattedTextField для ввода и пару стрелок для перемещения по различным значениям, доступным для форматированного поля.
Так как для ввода и отображения в компоненте JSpinner у нас есть форматированное поле JFormattedTextField, мы имеем три предустановленных типа ввода – это список строк, последовательность объектов Number, и последовательность объектов Date.
Для создания компонента JSpinner, сначала создается его модель данных.
Предустановленные модели данных – это SpinnerDateModel, SpinnerListModel, и SpinnerNumberModel.
Эти классы расширяют абстрактный класс AbstractSpinnerModel.
Поэтому, если вы хотите создать свою собственную модель данных, вам нужно создать свою собственную реализацию абстрактного класса AbstractSpinnerModel.
Здесь показано создание модели SpinnerListModel.
Сначала вы создаете массив

